草庐IT

c++ - constexpr 和 ODR

全部标签

c++ - constexpr 数组和 std::initializer_list

我正在尝试编写一个可以像这样使用的编译时valarray:constexprarraya={1.0,2.1,3.2,4.3,5.4,6.5};static_assert(a[0]==1.0,"");static_assert(a[3]==4.3,"");static_assert(a.size()==6,"");我设法通过以下实现实现了它并且工作正常(使用GCC4.7):#includetemplatestructarray{private:conststd::size_t_size;constT*_data;public:constexprarray(std::initializer

c++ - 如何使用 c/c++ 宏参数创建字符串

我正在努力实现这一目标:char*fname="results5.txt"使用这样的宏:#defineFILENAME(NUM)"results"NUM".txt"intnumber=5;char*fname=FILENAME(number);这样可以吗?怎么了?谢谢。 最佳答案 C因为你标记了C并且想要基于宏的解决方案,所以在宏中使用##defineFILENAME(NUM)"results"#NUM".txt"^^^^^char*fname=FILENAME(5);注意这种方式不能使用变量。intnumber=5;char*fn

c++ - 添加 long 值显示不同的 o/p

我在添加长值时遇到问题例子typedefunsignedshortUINT16;UINT16*flash_dest_ptr;//thisisequaltoinhexa0XFF910000UINT16data_length;//hex=0x000002AA&dec=682//nowwhenIaddUINT16*memory_loc_ver=flash_dest_ptr+data_length;dbug_printf(DBUG_ERROR|DBUG_NAVD,"ADDhex=0x%08X\n\r",memory_loc_ver);实际O/p=0xFF910554//shouldn'to/p

java - SWIG 将生成的类从不同的模块和包导入当前类

我很难获得SWIGtypemap(javapackage)正常工作。我尝试制作一个简单版本的问题,但似乎也失败了。foo.h:#ifndefFOO_H#defineFOO_HclassFoo{public:Foo(){};intdoSomething(){return1};};#endifbar.h:#ifndefBAR_H#defineBAR_H#include"foo.h"classBar{public:Bar(){};intdoSomething(Foofoo){returnfoo.doSomething();};};#endifFoo.i%moduleFooMod%includ

c++ - 幂函数输出错误 - C

这个问题在这里已经有了答案:returnvalueofpow()getsroundeddownifassignedtoaninteger(4个答案)关闭9年前。pow()函数给出了非常奇怪的输出。我尝试了各种组合:#include#includeintmain(){intd=1;longlongn1,n2;while(d这给出了错误的输出,即99而不是100等等。现在,如果我删除其中一个变量,ans。是正确的。如果我使用常量而不是d,则ans是正确的。如果我将n1和n2取为double,则ans是正确的。所以有两个pow()函数,它们都将变量作为幂,并将类型转换为整数会产生错误的输出。

c++ - 为 C++ 库创建自动 C 包装器?

假设我有一个C++DLL。AFAIK,没有广泛采用的C++ABI标准,因此为了确保它能正常工作并且不依赖于目标应用程序的编译器,我需要将我的库包装在C接口(interface)中。有没有什么工具可以自动生成这样的界面?如果他们可以围绕C接口(interface)生成包装器,看起来就像是原始的C++对象,那也很好,例如Foo*f=newFoo();//FooWrapper*fw=Foo_create();f->bar("test");//Foo_bar(fw,"test")转换为使用生成的CABI在我的库中调用的C函数。我知道C++是相当复杂的语言,并不是所有的东西都可以轻易地包装在C接

c++ - 如何使用c宏生成函数名

宏“VER”在其他一些我无法更改的头文件中被定义为“((u_long)1)”。在我的代码中,我需要使用“test”和VER组合函数“test_1”。但是编译器报告错误,因为它是“test_((u_long)1)”而不是“test_1”生成的。我的问题是:如何编写宏来生成“test_1”?提前致谢!#defineVER((u_long)1)/*ThisisdefinedinsomeotherheaderfilewhichIcan'tchange*/#definepaste(x,y,z)x##y##z#definepaste2(x,y,z)paste(x,y,z)#definefcall(

c++ - 使用 x264 将 OpenGL 输出转换为 H264

我想将OpenGL程序的输出转换为h264并流式传输输出。我在某个地方收集了大部分代码并得到了一个输出文件,但我不知道如何处理它,或者它是否有效。目前输出仅保存在file.h264中。编辑:“全局”变量x264_param_tparam;x264_t*encoder;x264_picture_tpic_in;x264_picture_tpic_out;x264_nal_t*headers;inti_nal;FILE*pFile;我的初始化函数:initX264(){pFile=fopen("file.h264","wb");x264_param_tparam;x264_param_de

c++ - 有没有支持任意位置位操作的高性能C/C++库?

有没有高性能的C/C++库,支持任意位置的位操作?例如:intBitCompare(constvoid*src,size_tsrcOffsetInBits,constvoid*dst,size_tdstOffsetInBits,size_tsizeInBits);比较src中的位[srcOffsetInBits,srcOffsetInBits+sizeInBits-1]和dst中的[dstOffsetInBits,dstOffsetInBits+sizeInBits-1]的函数,这些位被认为是little-endian无符号整数。假定所有缓冲区都足够大。boolBitEqual(...

c++ - 如何在 scandir 中参数化选择函数

scandir()函数扫描目录dir,调用每个目录条目上的select()作为“int(*filter)(conststructdirent*)”如何将模式值作为参数传递给过滤器中使用的fnmatch(constchar*pattern,constchar*string,intflags)函数?这是我的示例代码intmy_selectgrf(conststructdirent*namelist){intr=0;charmy_pattern[]="*.grf";r=fnmatch(my_pattern,namelist->d_name,FNM_PERIOD);return(r==0)?1